package com.hjq.fcloud.other

import android.app.Activity
import android.content.Context
import com.hjq.base.BaseDialog
import com.hjq.fcloud.R
import com.hjq.fcloud.aop.Permissions
import com.hjq.fcloud.ui.dialog.MessageDialog
import com.hjq.permissions.Permission
import com.hjq.toast.ToastUtils
import com.huawei.hms.hmsscankit.ScanUtil
import com.huawei.hms.ml.scan.HmsScan
import com.huawei.hms.ml.scan.HmsScanAnalyzerOptions

object ScanQrCode {

    fun startScanQrCode(context: Activity) {
        showScanQrCodeDialog(context, {
            scan(context)
        })
    }

    private fun scan(context: Activity) {
        // “QRCODE_SCAN_TYPE”和“DATAMATRIX_SCAN_TYPE”表示只扫描QR和DataMatrix的码，setViewType设置扫码标题，0表示设置扫码标题为“扫描二维码/条码”，1表示设置扫码标题为“扫描二维码”，默认为0; setErrorCheck设置错误监听，true表示监听错误并退出扫码页面，false表示不上报错误，仅检查到识别结果后退出扫码页面，默认为false
        val options = HmsScanAnalyzerOptions.Creator()
            .setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE, HmsScan.DATAMATRIX_SCAN_TYPE).setViewType(1)
            .setErrorCheck(true).create()
        ScanUtil.startScan(context, 222, options)
    }

    @Permissions(Permission.CAMERA)
    private fun showScanQrCodeDialog(context: Context, callBack: () -> Unit) {
        // 消息对话框
        MessageDialog.Builder(context) // 标题可以不用填写
            .setTitle(context.resources.getString(R.string.string_dialog_default_title)) // 内容必须要填写
            .setMessage("扫码功能需要申请摄像头权限") // 确定按钮文本
            .setConfirm(context.resources.getString(R.string.common_confirm)) // 设置 null 表示不显示取消按钮
            .setCancel(context.resources.getString(R.string.common_cancel)) // 设置点击按钮后不关闭对话框
            //.setAutoDismiss(false)
            .setListener(object : MessageDialog.OnListener {
                override fun onConfirm(dialog: BaseDialog?) {
                    callBack()
                }
            }).show()
    }
}